﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DAL.Helpers;
using DAL.Modelos;
using DAL;

namespace CuadroMandoIntegralFMCH.Form_s.Debitos
{
    public partial class DebitosImportarTipos : Form
    {
        public DebitosImportarTipos()
        {
            InitializeComponent();
        }

        private void btImportar_Click(object sender, EventArgs e)
        {
            //Abrir archivo de texto plano para poder procesar y guardar las Obras Sociales
            openFileDialog1.FileName = "";
            openFileDialog1.Filter = @"(*.*)|*.*";

            if (openFileDialog1.ShowDialog() != DialogResult.OK) return;

            var path = openFileDialog1.FileName;
            progressBar1.Minimum = 0;
            progressBar1.Maximum = File.ReadAllLines(path).Length;
            backgroundWorker.RunWorkerAsync(path);
        }

        private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            var path = e.Argument as string;
            var i = 1;

            if (path == null) return;

            var archivo = new StreamReader(path, System.Text.Encoding.Default);

            while (archivo.Peek() != -1)
            {

                var linea = archivo.ReadLine();

                if (string.IsNullOrEmpty(linea)) continue;

                var lineaSeparada = linea.Split(';');

                var idMotivo = int.Parse(lineaSeparada[0]);

                var descripcion = lineaSeparada[1];

                var tipo = lineaSeparada[2];

                var motivo = new MotivoDebito()
                                 {
                                     IdMotivo = idMotivo,
                                     Descripcion = descripcion,
                                     Tipo = tipo
                                 };
                var mensaje = new MessageHelper();
                if (!new Modelo().VerificacionMotivoDebito(idMotivo))
                    mensaje = new Modelo().AddMotivoDebito(motivo);

                if (!mensaje.status)
                    MessageBox.Show(mensaje.message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

                backgroundWorker.ReportProgress(i);
                i++;

            }
        }

        private void backgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            progressBar1.Visible = true;
            lbImportar.Visible = true;
            btImportar.Enabled = false;
            progressBar1.Value = e.ProgressPercentage;
            lbImportar.Text = e.ProgressPercentage.ToString() + @" archivos leidos";
        }

        private void backgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            progressBar1.Visible = false;

            if (e.Error != null)
            {
                MessageBox.Show(@"Error: " + e.Error.Message, @"Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                MessageBox.Show(@"Finalizo la Importación", @"Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }




    }
}
